package com.youmeek.ssm.module.area.service.impl;

import com.youmeek.ssm.module.area.model.ChinaArea;
import com.youmeek.ssm.module.common.service.INodeHierarchy;

public class ChinaAreaNodeHierachyImpl implements INodeHierarchy<ChinaArea> {

    @Override
    public boolean isHierarchy(ChinaArea pNode, ChinaArea sonNode) {
        if(pNode.getAreaCode().equals(sonNode.getParentId())){
            return true;
        }
        return false;
    }

    @Override
    public boolean isHierarchyRecursion(ChinaArea pNode, ChinaArea childrenNode) {
        // 如果 pNode 的 areaCode为0,则一定是后代节点
        if(pNode.getParentId() == null & pNode.getAreaCode().toString().equals(0)){
            return true;
        }
        // 如果 pNode 的 areaCode不为0，去除其末尾的0，如果childrenNode的areaCode以去除0后的pNode的areaCode开头，则是他的后代。
        // eg: 中原区：410102 郑州市：410100 河南省：410000
        String pAreaNodeWithOutZreo = (pNode.getAreaCode().toString()).replaceAll("(00)+$", "");
        if((childrenNode.getAreaCode().toString()).startsWith(pAreaNodeWithOutZreo)){
            return true;
        }
        return false;
    }
}
